/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ivanbiz.service;

import com.ivanbiz.dao.KelasDAO;
import com.ivanbiz.dao.PengajarDAO;
import com.ivanbiz.dao.impl.KelasDAOImpl;
import com.ivanbiz.dao.impl.PengajarDAOImpl;
import com.ivanbiz.model.Kelas;
import com.ivanbiz.model.Pengajar;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;

/**
 *
 * @author IW20149X
 */
public class KelasActionService extends SelectorComposer<Component> {

    KelasDAO kelasDAO = new KelasDAOImpl();
    PengajarDAO pengajarDAO = new PengajarDAOImpl();
    SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy");
    @Wire
    Window winKelasAction;
    @Wire
    Textbox transactionReference;
    @Wire
    Textbox deskripsi;
    @Wire
    Combobox listPengajar;
    @Wire
    Datebox tanggalKelas;
    @Wire
    Checkbox checkTanggal2;
    @Wire
    Datebox tanggalKelas2;
    @Wire
    Textbox tempatKelas;
    @Wire
    Textbox alamatKelas;
    Kelas kelas;

    @Override
    public void doAfterCompose(Component comp) throws Exception {
        super.doAfterCompose(comp);
        loadPengajar();
        kelas = (Kelas) Executions.getCurrent().getArg().get("kelas");
//        if (checkTanggal2.getValue() != null) {
//            if (checkTanggal2.getValue().equals("Y")) {
//                checkTanggal2.setChecked(true);
//            } else {
//                tanggalKelas2.setValue(null);
//            }
//        }
    }

    private void loadPengajar() {
        try {
            List<Pengajar> loadPengajar = pengajarDAO.getAll(Pengajar.class);
            for (Pengajar pengajar : loadPengajar) {
                Comboitem item = new Comboitem();
                item.setValue(pengajar);
                item.setLabel(pengajar.getNama());
                listPengajar.appendChild(item);
            }
        } catch (Exception ex) {
            Logger.getLogger(KelasService.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Listen("onClick=#simpan;")
    public void simpan() {
        if (kelas == null) {
            kelas = new Kelas();
        }
        kelas.setTransactionReference(transactionReference.getValue());
        kelas.setDeskripsi(deskripsi.getValue());
        kelas.setPengajar((Pengajar) (listPengajar.getSelectedItem() == null ? null : listPengajar.getSelectedItem().getValue()));
        kelas.setTanggalKelas(tanggalKelas.getValue());
        kelas.setTanggalKelas2(tanggalKelas2.getValue());
        kelas.setTempatKelas(tempatKelas.getValue());
        kelas.setAlamatKelas(alamatKelas.getValue());
        kelas.setNIK("");
        kelas.setStatusKelas("N");
        validateKelas(kelas);
    }

    private void validateKelas(Kelas kelas) {
        if (kelas.getTransactionReference().trim().isEmpty()) {
            Messagebox.show("Transaksi Reference tidak boleh kosong");
        }
        if (kelas.getDeskripsi().trim().isEmpty()) {
            Messagebox.show("Deskripsi tidak boleh kosong");
        } else if (kelas.getPengajar() == null) {
            Messagebox.show("Pengajar tidak boleh kosong");
        } else if (kelas.getTanggalKelas() == null) {
            Messagebox.show("Tanggal tidak boleh kosong");
        } else if (kelas.getTempatKelas().trim().isEmpty()) {
            Messagebox.show("Tempat tidak boleh kosong");
        } else if (kelas.getAlamatKelas().trim().isEmpty()) {
            Messagebox.show("Alamat tidak boleh kosong");
        } else {
            try {
                kelasDAO.saveOrUpdate(kelas);
                winKelasAction.detach();
            } catch (Exception ex) {
                Logger.getLogger(KelasActionService.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}
